package com.lrkj.back.vo;

import java.util.ArrayList;
import java.util.List;

public class PageVo<T> {
	//取出所有的集合
	private List<T> list;
	//每页所有的集合
	private List<List<T>> pageList = new ArrayList<>();
	//当前页的集合
	private List<T> pageNow;
	//页数
	private int pageNo = 1;
	//最大页数
	private int pageMax;
	//每页显示数据
	private static final int pageRowNum =10;
	public PageVo(List<T> list){
		this.list = list;//获取数据库的全部的信息
		splitpage();
		getNowList();
		
	}
	
	public void getNowList() {
		int n = pageNo-1;
		this.pageNow = pageList.get(n);
		
		
	}
	/**
	 * 分页算法，得出最大的页数以及每一页存放的数据
	 */
	public void splitpage() {
		//得出一共有多少条记录
		int size = list.size();
		//这个if语句主要是判断取整的问题，如果总得条数除以每一页的
		//显示的条数为0的话那么一共可以分为pageMax页，如果不为0，那么要记得加上1
		//不然的话就是显示不了最后一页的信息了
		if(size%pageRowNum==0){
			pageMax = size/pageRowNum;
			
		}else{
			pageMax = size/pageRowNum+1;
		}
		int index = 0;
		//这里是先取出一页中的要显示的条数放到一个List集合中
		//然后在使用List保存每一页
		for(int i=0;i<pageMax;i++){
			List<T> tlist = new ArrayList<T>();
			for(int j=0;j<pageRowNum;j++){
				if(index<size){
					tlist.add(list.get(index++));
				}else{
					break;
				}
			}
			pageList.add(tlist);
		}
		
	}
	
	public void setFirstPage(){
		this.pageNo = 1;
		getNowList();
	}
	/**
	 * 前一页
	 */
	public void setPrivousPage(){
		if(this.pageNo>1){
			this.pageNo--;
		}
		getNowList();
	}
	/**
	 * 下一页
	 */
	public void setNextPage(){
		if(this.pageNo<this.pageMax){
			this.pageNo++;
		}
		getNowList();
	}
	/**
	 * 最后一页
	 */
	public void setLastPage(){
		this.pageNo = this.pageMax;
		getNowList();
	}

	public List<T> getList() {
		return list;
	}

	public void setList(List<T> list) {
		this.list = list;
	}

	public List<List<T>> getPageList() {
		return pageList;
	}

	public void setPageList(List<List<T>> pageList) {
		this.pageList = pageList;
	}

	public List<T> getPageNow() {
		return pageNow;
	}

	public void setPageNow(List<T> pageNow) {
		this.pageNow = pageNow;
	}

	public int getPageNo() {
		return pageNo;
	}

	public void setPageNo(int pageNo) {
		this.pageNo = pageNo;
	}

	public int getPageMax() {
		return pageMax;
	}

	public void setPageMax(int pageMax) {
		this.pageMax = pageMax;
	}
	

}
